#include "gtkdialog.h"
#include "gtkdialogprivate.h"
#include "gtkheaderbar.h"
+#include "gtkheaderbarprivate.h"
#include "gtklabel.h"
#include "gtkmarshalers.h"
#include "gtkbox.h"
g_list_free (children);
update_suggested_action (dialog);
+ _gtk_header_bar_track_default_decoration (GTK_HEADER_BAR (priv->headerbar));
g_signal_connect (priv->action_area, "add", G_CALLBACK (add_cb), dialog);
}
else if (g_str_equal (type, "titlebar"))
{
priv->headerbar = GTK_WIDGET (child);
+ _gtk_header_bar_track_default_decoration (GTK_HEADER_BAR (priv->headerbar));
gtk_window_set_titlebar (GTK_WINDOW (buildable), priv->headerbar);
}
else if (g_str_equal (type, "action"))
gboolean show_title_buttons;
gchar *decoration_layout;
gboolean decoration_layout_set;
+ gboolean track_default_decoration;
GtkWidget *titlebar_start_box;
GtkWidget *titlebar_end_box;
return priv->show_title_buttons && priv->shows_app_menu;
}
+static void
+update_default_decoration (GtkHeaderBar *bar)
+{
+ GtkHeaderBarPrivate *priv = gtk_header_bar_get_instance_private (bar);
+ GtkStyleContext *context;
+
+ context = gtk_widget_get_style_context (GTK_WIDGET (bar));
+
+ if (priv->children != NULL || priv->custom_title != NULL)
+ gtk_style_context_remove_class (context, "default-decoration");
+ else
+ gtk_style_context_add_class (context, "default-decoration");
+}
+
+void
+_gtk_header_bar_track_default_decoration (GtkHeaderBar *bar)
+{
+ GtkHeaderBarPrivate *priv = gtk_header_bar_get_instance_private (bar);
+
+ priv->track_default_decoration = TRUE;
+
+ update_default_decoration (bar);
+}
+
/* As an intended side effect, this function allows @child
* to be the title/label box */
static void
g_signal_connect (widget, "notify::visible", G_CALLBACK (notify_child_cb), bar);
_gtk_header_bar_update_separator_visibility (bar);
+
+ if (priv->track_default_decoration)
+ update_default_decoration (bar);
}
static void
g_free (child);
gtk_widget_queue_resize (GTK_WIDGET (container));
_gtk_header_bar_update_separator_visibility (bar);
+
+ if (priv->track_default_decoration)
+ update_default_decoration (bar);
}
}